package com.alvin.template.account;

/**
 * 
 * @author alvin.chen    
 * @date 2015年11月26日 上午10:38:20
 */
public abstract class Account {
	//留给子方法实现
	protected abstract String accountType();
	
	//留给子方法实现
	protected abstract double rate();
	
	//具体业务实现类
	private double calculatorAmount(String type) {
		if("HQ".equals(type)) {
			return 1000;
		} else {
			return 2000;
		}
	}
	
	//模板方法： 计算利息
	public final double calInterest() {
		String type = this.accountType();
		return calculatorAmount(type) * this.rate();
	}
}
